@bendyline/squisq-editor-react 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DocumentSettingsDialog.d.ts +26 -0
- package/dist/DocumentSettingsDialog.d.ts.map +1 -0
- package/dist/DocumentSettingsDialog.js +115 -0
- package/dist/DocumentSettingsDialog.js.map +1 -0
- package/dist/EditorContext.d.ts +248 -4
- package/dist/EditorContext.d.ts.map +1 -1
- package/dist/EditorContext.js +248 -10
- package/dist/EditorContext.js.map +1 -1
- package/dist/EditorShell.d.ts +184 -4
- package/dist/EditorShell.d.ts.map +1 -1
- package/dist/EditorShell.js +184 -12
- package/dist/EditorShell.js.map +1 -1
- package/dist/EmojiPicker.d.ts +50 -0
- package/dist/EmojiPicker.d.ts.map +1 -0
- package/dist/EmojiPicker.js +182 -0
- package/dist/EmojiPicker.js.map +1 -0
- package/dist/ImageEditor.d.ts +68 -0
- package/dist/ImageEditor.d.ts.map +1 -0
- package/dist/ImageEditor.js +166 -0
- package/dist/ImageEditor.js.map +1 -0
- package/dist/ImageNodeView.d.ts +13 -1
- package/dist/ImageNodeView.d.ts.map +1 -1
- package/dist/ImageNodeView.js +172 -19
- package/dist/ImageNodeView.js.map +1 -1
- package/dist/ImageViewer.d.ts +26 -0
- package/dist/ImageViewer.d.ts.map +1 -0
- package/dist/ImageViewer.js +119 -0
- package/dist/ImageViewer.js.map +1 -0
- package/dist/InlineIcon.d.ts +17 -0
- package/dist/InlineIcon.d.ts.map +1 -0
- package/dist/InlineIcon.js +72 -0
- package/dist/InlineIcon.js.map +1 -0
- package/dist/InlinePreviewGutter.d.ts +52 -0
- package/dist/InlinePreviewGutter.d.ts.map +1 -0
- package/dist/InlinePreviewGutter.js +397 -0
- package/dist/InlinePreviewGutter.js.map +1 -0
- package/dist/LinkDialog.d.ts +43 -0
- package/dist/LinkDialog.d.ts.map +1 -0
- package/dist/LinkDialog.js +102 -0
- package/dist/LinkDialog.js.map +1 -0
- package/dist/MediaBin.d.ts +12 -1
- package/dist/MediaBin.d.ts.map +1 -1
- package/dist/MediaBin.js +13 -3
- package/dist/MediaBin.js.map +1 -1
- package/dist/MentionExtension.js +10 -7
- package/dist/MentionExtension.js.map +1 -1
- package/dist/OutlinePanel.d.ts +17 -0
- package/dist/OutlinePanel.d.ts.map +1 -0
- package/dist/OutlinePanel.js +167 -0
- package/dist/OutlinePanel.js.map +1 -0
- package/dist/PlainHtmlPreview.d.ts +50 -0
- package/dist/PlainHtmlPreview.d.ts.map +1 -0
- package/dist/PlainHtmlPreview.js +155 -0
- package/dist/PlainHtmlPreview.js.map +1 -0
- package/dist/PreviewControls.d.ts +15 -1
- package/dist/PreviewControls.d.ts.map +1 -1
- package/dist/PreviewControls.js +75 -18
- package/dist/PreviewControls.js.map +1 -1
- package/dist/PreviewPanel.d.ts +11 -10
- package/dist/PreviewPanel.d.ts.map +1 -1
- package/dist/PreviewPanel.js +20 -17
- package/dist/PreviewPanel.js.map +1 -1
- package/dist/RawEditor.d.ts.map +1 -1
- package/dist/RawEditor.js +198 -4
- package/dist/RawEditor.js.map +1 -1
- package/dist/RecorderEntry.d.ts +24 -0
- package/dist/RecorderEntry.d.ts.map +1 -0
- package/dist/RecorderEntry.js +139 -0
- package/dist/RecorderEntry.js.map +1 -0
- package/dist/TemplateAnnotation.d.ts.map +1 -1
- package/dist/TemplateAnnotation.js +32 -6
- package/dist/TemplateAnnotation.js.map +1 -1
- package/dist/TemplatePicker.d.ts +53 -0
- package/dist/TemplatePicker.d.ts.map +1 -0
- package/dist/TemplatePicker.js +388 -0
- package/dist/TemplatePicker.js.map +1 -0
- package/dist/ThemeCustomizerPanel.d.ts +32 -0
- package/dist/ThemeCustomizerPanel.d.ts.map +1 -0
- package/dist/ThemeCustomizerPanel.js +256 -0
- package/dist/ThemeCustomizerPanel.js.map +1 -0
- package/dist/ThemePicker.d.ts +33 -0
- package/dist/ThemePicker.d.ts.map +1 -0
- package/dist/ThemePicker.js +148 -0
- package/dist/ThemePicker.js.map +1 -0
- package/dist/Toolbar.d.ts.map +1 -1
- package/dist/Toolbar.js +508 -33
- package/dist/Toolbar.js.map +1 -1
- package/dist/VersionHistoryPanel.d.ts +14 -0
- package/dist/VersionHistoryPanel.d.ts.map +1 -0
- package/dist/VersionHistoryPanel.js +147 -0
- package/dist/VersionHistoryPanel.js.map +1 -0
- package/dist/ViewMenuPanel.d.ts +13 -0
- package/dist/ViewMenuPanel.d.ts.map +1 -0
- package/dist/ViewMenuPanel.js +58 -0
- package/dist/ViewMenuPanel.js.map +1 -0
- package/dist/WysiwygEditor.d.ts.map +1 -1
- package/dist/WysiwygEditor.js +198 -9
- package/dist/WysiwygEditor.js.map +1 -1
- package/dist/__tests__/detectMarkdown.test.js +0 -14
- package/dist/__tests__/detectMarkdown.test.js.map +1 -1
- package/dist/__tests__/documentSettingsDialog.test.d.ts +2 -0
- package/dist/__tests__/documentSettingsDialog.test.d.ts.map +1 -0
- package/dist/__tests__/documentSettingsDialog.test.js +132 -0
- package/dist/__tests__/documentSettingsDialog.test.js.map +1 -0
- package/dist/__tests__/emojiPicker.test.d.ts +2 -0
- package/dist/__tests__/emojiPicker.test.d.ts.map +1 -0
- package/dist/__tests__/emojiPicker.test.js +111 -0
- package/dist/__tests__/emojiPicker.test.js.map +1 -0
- package/dist/__tests__/fileKind.test.js +13 -0
- package/dist/__tests__/fileKind.test.js.map +1 -1
- package/dist/__tests__/imageEditAffordance.test.d.ts +2 -0
- package/dist/__tests__/imageEditAffordance.test.d.ts.map +1 -0
- package/dist/__tests__/imageEditAffordance.test.js +188 -0
- package/dist/__tests__/imageEditAffordance.test.js.map +1 -0
- package/dist/__tests__/imageEditorShell.test.d.ts +2 -0
- package/dist/__tests__/imageEditorShell.test.d.ts.map +1 -0
- package/dist/__tests__/imageEditorShell.test.js +52 -0
- package/dist/__tests__/imageEditorShell.test.js.map +1 -0
- package/dist/__tests__/imageEditorState.test.d.ts +3 -0
- package/dist/__tests__/imageEditorState.test.d.ts.map +1 -0
- package/dist/__tests__/imageEditorState.test.js +148 -0
- package/dist/__tests__/imageEditorState.test.js.map +1 -0
- package/dist/__tests__/inlinePreviewGutter.test.d.ts +2 -0
- package/dist/__tests__/inlinePreviewGutter.test.d.ts.map +1 -0
- package/dist/__tests__/inlinePreviewGutter.test.js +51 -0
- package/dist/__tests__/inlinePreviewGutter.test.js.map +1 -0
- package/dist/__tests__/inlinePreviewGutterAllBlocks.test.d.ts +2 -0
- package/dist/__tests__/inlinePreviewGutterAllBlocks.test.d.ts.map +1 -0
- package/dist/__tests__/inlinePreviewGutterAllBlocks.test.js +63 -0
- package/dist/__tests__/inlinePreviewGutterAllBlocks.test.js.map +1 -0
- package/dist/__tests__/jsonEditor.test.d.ts +2 -0
- package/dist/__tests__/jsonEditor.test.d.ts.map +1 -0
- package/dist/__tests__/jsonEditor.test.js +134 -0
- package/dist/__tests__/jsonEditor.test.js.map +1 -0
- package/dist/__tests__/layersPanel.test.d.ts +2 -0
- package/dist/__tests__/layersPanel.test.d.ts.map +1 -0
- package/dist/__tests__/layersPanel.test.js +84 -0
- package/dist/__tests__/layersPanel.test.js.map +1 -0
- package/dist/__tests__/linkDialogDocPicker.test.d.ts +7 -0
- package/dist/__tests__/linkDialogDocPicker.test.d.ts.map +1 -0
- package/dist/__tests__/linkDialogDocPicker.test.js +75 -0
- package/dist/__tests__/linkDialogDocPicker.test.js.map +1 -0
- package/dist/__tests__/mediaAttachmentFlow.test.d.ts +2 -0
- package/dist/__tests__/mediaAttachmentFlow.test.d.ts.map +1 -0
- package/dist/__tests__/mediaAttachmentFlow.test.js +99 -0
- package/dist/__tests__/mediaAttachmentFlow.test.js.map +1 -0
- package/dist/__tests__/outlinePanel.test.d.ts +2 -0
- package/dist/__tests__/outlinePanel.test.d.ts.map +1 -0
- package/dist/__tests__/outlinePanel.test.js +68 -0
- package/dist/__tests__/outlinePanel.test.js.map +1 -0
- package/dist/__tests__/plainHtmlPreview.test.d.ts +2 -0
- package/dist/__tests__/plainHtmlPreview.test.d.ts.map +1 -0
- package/dist/__tests__/plainHtmlPreview.test.js +87 -0
- package/dist/__tests__/plainHtmlPreview.test.js.map +1 -0
- package/dist/__tests__/propertiesPanel.test.d.ts +2 -0
- package/dist/__tests__/propertiesPanel.test.d.ts.map +1 -0
- package/dist/__tests__/propertiesPanel.test.js +64 -0
- package/dist/__tests__/propertiesPanel.test.js.map +1 -0
- package/dist/__tests__/recorderFormats.test.d.ts +2 -0
- package/dist/__tests__/recorderFormats.test.d.ts.map +1 -0
- package/dist/__tests__/recorderFormats.test.js +121 -0
- package/dist/__tests__/recorderFormats.test.js.map +1 -0
- package/dist/__tests__/recorderTimingJson.test.d.ts +2 -0
- package/dist/__tests__/recorderTimingJson.test.d.ts.map +1 -0
- package/dist/__tests__/recorderTimingJson.test.js +37 -0
- package/dist/__tests__/recorderTimingJson.test.js.map +1 -0
- package/dist/__tests__/templateAnnotationRoundTrip.test.d.ts +2 -0
- package/dist/__tests__/templateAnnotationRoundTrip.test.d.ts.map +1 -0
- package/dist/__tests__/templateAnnotationRoundTrip.test.js +31 -0
- package/dist/__tests__/templateAnnotationRoundTrip.test.js.map +1 -0
- package/dist/__tests__/tiptapBridge.test.js +26 -0
- package/dist/__tests__/tiptapBridge.test.js.map +1 -1
- package/dist/__tests__/tiptapImageRoundTrip.test.d.ts +2 -0
- package/dist/__tests__/tiptapImageRoundTrip.test.d.ts.map +1 -0
- package/dist/__tests__/tiptapImageRoundTrip.test.js +68 -0
- package/dist/__tests__/tiptapImageRoundTrip.test.js.map +1 -0
- package/dist/__tests__/useImageEditor.test.d.ts +2 -0
- package/dist/__tests__/useImageEditor.test.d.ts.map +1 -0
- package/dist/__tests__/useImageEditor.test.js +131 -0
- package/dist/__tests__/useImageEditor.test.js.map +1 -0
- package/dist/__tests__/useMediaRecorder.test.d.ts +2 -0
- package/dist/__tests__/useMediaRecorder.test.d.ts.map +1 -0
- package/dist/__tests__/useMediaRecorder.test.js +153 -0
- package/dist/__tests__/useMediaRecorder.test.js.map +1 -0
- package/dist/__tests__/versionHistory.test.d.ts +2 -0
- package/dist/__tests__/versionHistory.test.d.ts.map +1 -0
- package/dist/__tests__/versionHistory.test.js +124 -0
- package/dist/__tests__/versionHistory.test.js.map +1 -0
- package/dist/blockSlice.d.ts +24 -0
- package/dist/blockSlice.d.ts.map +1 -0
- package/dist/blockSlice.js +63 -0
- package/dist/blockSlice.js.map +1 -0
- package/dist/buildPreviewDoc.d.ts.map +1 -1
- package/dist/buildPreviewDoc.js +52 -2
- package/dist/buildPreviewDoc.js.map +1 -1
- package/dist/emojiData.d.ts +81 -0
- package/dist/emojiData.d.ts.map +1 -0
- package/dist/emojiData.js +1283 -0
- package/dist/emojiData.js.map +1 -0
- package/dist/fileKind.d.ts +6 -2
- package/dist/fileKind.d.ts.map +1 -1
- package/dist/fileKind.js +25 -4
- package/dist/fileKind.js.map +1 -1
- package/dist/hooks/useFileDrop.d.ts.map +1 -1
- package/dist/hooks/useFileDrop.js +40 -4
- package/dist/hooks/useFileDrop.js.map +1 -1
- package/dist/imageEditor/CanvasSurface.d.ts +31 -0
- package/dist/imageEditor/CanvasSurface.d.ts.map +1 -0
- package/dist/imageEditor/CanvasSurface.js +264 -0
- package/dist/imageEditor/CanvasSurface.js.map +1 -0
- package/dist/imageEditor/ImageVersionHistoryDropdown.d.ts +39 -0
- package/dist/imageEditor/ImageVersionHistoryDropdown.d.ts.map +1 -0
- package/dist/imageEditor/ImageVersionHistoryDropdown.js +283 -0
- package/dist/imageEditor/ImageVersionHistoryDropdown.js.map +1 -0
- package/dist/imageEditor/LayersPanel.d.ts +14 -0
- package/dist/imageEditor/LayersPanel.d.ts.map +1 -0
- package/dist/imageEditor/LayersPanel.js +43 -0
- package/dist/imageEditor/LayersPanel.js.map +1 -0
- package/dist/imageEditor/PropertiesPanel.d.ts +14 -0
- package/dist/imageEditor/PropertiesPanel.d.ts.map +1 -0
- package/dist/imageEditor/PropertiesPanel.js +97 -0
- package/dist/imageEditor/PropertiesPanel.js.map +1 -0
- package/dist/imageEditor/Toolbar.d.ts +30 -0
- package/dist/imageEditor/Toolbar.d.ts.map +1 -0
- package/dist/imageEditor/Toolbar.js +108 -0
- package/dist/imageEditor/Toolbar.js.map +1 -0
- package/dist/imageEditor/icons.d.ts +24 -0
- package/dist/imageEditor/icons.d.ts.map +1 -0
- package/dist/imageEditor/icons.js +45 -0
- package/dist/imageEditor/icons.js.map +1 -0
- package/dist/imageEditor/layers/EditorImageLayer.d.ts +16 -0
- package/dist/imageEditor/layers/EditorImageLayer.d.ts.map +1 -0
- package/dist/imageEditor/layers/EditorImageLayer.js +37 -0
- package/dist/imageEditor/layers/EditorImageLayer.js.map +1 -0
- package/dist/imageEditor/layers/EditorShapeLayer.d.ts +15 -0
- package/dist/imageEditor/layers/EditorShapeLayer.d.ts.map +1 -0
- package/dist/imageEditor/layers/EditorShapeLayer.js +20 -0
- package/dist/imageEditor/layers/EditorShapeLayer.js.map +1 -0
- package/dist/imageEditor/layers/EditorTextLayer.d.ts +18 -0
- package/dist/imageEditor/layers/EditorTextLayer.d.ts.map +1 -0
- package/dist/imageEditor/layers/EditorTextLayer.js +13 -0
- package/dist/imageEditor/layers/EditorTextLayer.js.map +1 -0
- package/dist/imageEditor/layers/SelectionHandles.d.ts +17 -0
- package/dist/imageEditor/layers/SelectionHandles.d.ts.map +1 -0
- package/dist/imageEditor/layers/SelectionHandles.js +19 -0
- package/dist/imageEditor/layers/SelectionHandles.js.map +1 -0
- package/dist/imageEditor/state.d.ts +76 -0
- package/dist/imageEditor/state.d.ts.map +1 -0
- package/dist/imageEditor/state.js +87 -0
- package/dist/imageEditor/state.js.map +1 -0
- package/dist/imageEditor/useImageEditor.d.ts +53 -0
- package/dist/imageEditor/useImageEditor.d.ts.map +1 -0
- package/dist/imageEditor/useImageEditor.js +244 -0
- package/dist/imageEditor/useImageEditor.js.map +1 -0
- package/dist/imageEditor/useImageEditorTokens.d.ts +16 -0
- package/dist/imageEditor/useImageEditorTokens.d.ts.map +1 -0
- package/dist/imageEditor/useImageEditorTokens.js +45 -0
- package/dist/imageEditor/useImageEditorTokens.js.map +1 -0
- package/dist/index.d.ts +48 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -1
- package/dist/jsonEditor/EmbeddedRichTextField.d.ts +15 -0
- package/dist/jsonEditor/EmbeddedRichTextField.d.ts.map +1 -0
- package/dist/jsonEditor/EmbeddedRichTextField.js +74 -0
- package/dist/jsonEditor/EmbeddedRichTextField.js.map +1 -0
- package/dist/jsonEditor/JsonEditor.d.ts +36 -0
- package/dist/jsonEditor/JsonEditor.d.ts.map +1 -0
- package/dist/jsonEditor/JsonEditor.js +15 -0
- package/dist/jsonEditor/JsonEditor.js.map +1 -0
- package/dist/jsonEditor/JsonEditorContext.d.ts +28 -0
- package/dist/jsonEditor/JsonEditorContext.d.ts.map +1 -0
- package/dist/jsonEditor/JsonEditorContext.js +41 -0
- package/dist/jsonEditor/JsonEditorContext.js.map +1 -0
- package/dist/jsonEditor/RenderNode.d.ts +16 -0
- package/dist/jsonEditor/RenderNode.d.ts.map +1 -0
- package/dist/jsonEditor/RenderNode.js +32 -0
- package/dist/jsonEditor/RenderNode.js.map +1 -0
- package/dist/jsonEditor/editors.d.ts +36 -0
- package/dist/jsonEditor/editors.d.ts.map +1 -0
- package/dist/jsonEditor/editors.js +347 -0
- package/dist/jsonEditor/editors.js.map +1 -0
- package/dist/jsonEditor/index.d.ts +3 -0
- package/dist/jsonEditor/index.d.ts.map +1 -0
- package/dist/jsonEditor/index.js +2 -0
- package/dist/jsonEditor/index.js.map +1 -0
- package/dist/jsonEditor/useJsonEditorTokens.d.ts +13 -0
- package/dist/jsonEditor/useJsonEditorTokens.d.ts.map +1 -0
- package/dist/jsonEditor/useJsonEditorTokens.js +38 -0
- package/dist/jsonEditor/useJsonEditorTokens.js.map +1 -0
- package/dist/recorder/RecorderButton.d.ts +31 -0
- package/dist/recorder/RecorderButton.d.ts.map +1 -0
- package/dist/recorder/RecorderButton.js +24 -0
- package/dist/recorder/RecorderButton.js.map +1 -0
- package/dist/recorder/RecorderModal.d.ts +59 -0
- package/dist/recorder/RecorderModal.d.ts.map +1 -0
- package/dist/recorder/RecorderModal.js +333 -0
- package/dist/recorder/RecorderModal.js.map +1 -0
- package/dist/recorder/RecorderPanel.d.ts +25 -0
- package/dist/recorder/RecorderPanel.d.ts.map +1 -0
- package/dist/recorder/RecorderPanel.js +30 -0
- package/dist/recorder/RecorderPanel.js.map +1 -0
- package/dist/recorder/formats.d.ts +51 -0
- package/dist/recorder/formats.d.ts.map +1 -0
- package/dist/recorder/formats.js +144 -0
- package/dist/recorder/formats.js.map +1 -0
- package/dist/recorder/hooks/useMediaRecorder.d.ts +90 -0
- package/dist/recorder/hooks/useMediaRecorder.d.ts.map +1 -0
- package/dist/recorder/hooks/useMediaRecorder.js +277 -0
- package/dist/recorder/hooks/useMediaRecorder.js.map +1 -0
- package/dist/recorder/hooks/useStreamPreview.d.ts +22 -0
- package/dist/recorder/hooks/useStreamPreview.d.ts.map +1 -0
- package/dist/recorder/hooks/useStreamPreview.js +44 -0
- package/dist/recorder/hooks/useStreamPreview.js.map +1 -0
- package/dist/recorder/sources/cameraStream.d.ts +22 -0
- package/dist/recorder/sources/cameraStream.d.ts.map +1 -0
- package/dist/recorder/sources/cameraStream.js +24 -0
- package/dist/recorder/sources/cameraStream.js.map +1 -0
- package/dist/recorder/sources/micStream.d.ts +15 -0
- package/dist/recorder/sources/micStream.d.ts.map +1 -0
- package/dist/recorder/sources/micStream.js +24 -0
- package/dist/recorder/sources/micStream.js.map +1 -0
- package/dist/recorder/sources/screenStream.d.ts +53 -0
- package/dist/recorder/sources/screenStream.d.ts.map +1 -0
- package/dist/recorder/sources/screenStream.js +114 -0
- package/dist/recorder/sources/screenStream.js.map +1 -0
- package/dist/recorder/timingJson.d.ts +51 -0
- package/dist/recorder/timingJson.d.ts.map +1 -0
- package/dist/recorder/timingJson.js +42 -0
- package/dist/recorder/timingJson.js.map +1 -0
- package/dist/tiptap/TiptapAudio.d.ts +26 -0
- package/dist/tiptap/TiptapAudio.d.ts.map +1 -0
- package/dist/tiptap/TiptapAudio.js +58 -0
- package/dist/tiptap/TiptapAudio.js.map +1 -0
- package/dist/tiptap/TiptapVideo.d.ts +30 -0
- package/dist/tiptap/TiptapVideo.d.ts.map +1 -0
- package/dist/tiptap/TiptapVideo.js +66 -0
- package/dist/tiptap/TiptapVideo.js.map +1 -0
- package/dist/tiptap/useResolvedMediaSrc.d.ts +2 -0
- package/dist/tiptap/useResolvedMediaSrc.d.ts.map +1 -0
- package/dist/tiptap/useResolvedMediaSrc.js +42 -0
- package/dist/tiptap/useResolvedMediaSrc.js.map +1 -0
- package/dist/tiptapBridge.d.ts.map +1 -1
- package/dist/tiptapBridge.js +210 -16
- package/dist/tiptapBridge.js.map +1 -1
- package/dist/useHeadingLayout.d.ts +54 -0
- package/dist/useHeadingLayout.d.ts.map +1 -0
- package/dist/useHeadingLayout.js +260 -0
- package/dist/useHeadingLayout.js.map +1 -0
- package/dist/utils/collectInlineFontAwesomeCss.d.ts +21 -0
- package/dist/utils/collectInlineFontAwesomeCss.d.ts.map +1 -0
- package/dist/utils/collectInlineFontAwesomeCss.js +68 -0
- package/dist/utils/collectInlineFontAwesomeCss.js.map +1 -0
- package/dist/utils/dropUtils.d.ts +21 -2
- package/dist/utils/dropUtils.d.ts.map +1 -1
- package/dist/utils/dropUtils.js +43 -4
- package/dist/utils/dropUtils.js.map +1 -1
- package/dist/utils/normalizeMalformedAssetUrl.d.ts +15 -0
- package/dist/utils/normalizeMalformedAssetUrl.d.ts.map +1 -0
- package/dist/utils/normalizeMalformedAssetUrl.js +27 -0
- package/dist/utils/normalizeMalformedAssetUrl.js.map +1 -0
- package/package.json +8 -5
- package/src/DocumentSettingsDialog.tsx +266 -0
- package/src/EditorContext.tsx +534 -10
- package/src/EditorShell.tsx +691 -63
- package/src/EmojiPicker.tsx +332 -0
- package/src/ImageEditor.tsx +327 -0
- package/src/ImageNodeView.tsx +222 -21
- package/src/ImageViewer.tsx +221 -0
- package/src/InlineIcon.ts +84 -0
- package/src/InlinePreviewGutter.tsx +582 -0
- package/src/LinkDialog.tsx +276 -0
- package/src/MediaBin.tsx +22 -3
- package/src/MentionExtension.tsx +10 -7
- package/src/OutlinePanel.tsx +295 -0
- package/src/PlainHtmlPreview.tsx +211 -0
- package/src/PreviewControls.tsx +130 -24
- package/src/PreviewPanel.tsx +38 -21
- package/src/RawEditor.tsx +215 -4
- package/src/RecorderEntry.tsx +164 -0
- package/src/TemplateAnnotation.ts +32 -6
- package/src/TemplatePicker.tsx +818 -0
- package/src/ThemeCustomizerPanel.tsx +595 -0
- package/src/ThemePicker.tsx +319 -0
- package/src/Toolbar.tsx +708 -111
- package/src/VersionHistoryPanel.tsx +329 -0
- package/src/ViewMenuPanel.tsx +188 -0
- package/src/WysiwygEditor.tsx +229 -9
- package/src/__tests__/detectMarkdown.test.ts +0 -15
- package/src/__tests__/documentSettingsDialog.test.tsx +147 -0
- package/src/__tests__/emojiPicker.test.tsx +133 -0
- package/src/__tests__/fileKind.test.ts +16 -0
- package/src/__tests__/imageEditAffordance.test.tsx +268 -0
- package/src/__tests__/imageEditorShell.test.tsx +57 -0
- package/src/__tests__/imageEditorState.test.ts +171 -0
- package/src/__tests__/inlinePreviewGutter.test.tsx +62 -0
- package/src/__tests__/inlinePreviewGutterAllBlocks.test.tsx +103 -0
- package/src/__tests__/jsonEditor.test.tsx +168 -0
- package/src/__tests__/layersPanel.test.tsx +97 -0
- package/src/__tests__/linkDialogDocPicker.test.tsx +137 -0
- package/src/__tests__/mediaAttachmentFlow.test.ts +110 -0
- package/src/__tests__/outlinePanel.test.tsx +79 -0
- package/src/__tests__/plainHtmlPreview.test.tsx +107 -0
- package/src/__tests__/propertiesPanel.test.tsx +69 -0
- package/src/__tests__/recorderFormats.test.ts +146 -0
- package/src/__tests__/recorderTimingJson.test.ts +41 -0
- package/src/__tests__/templateAnnotationRoundTrip.test.ts +34 -0
- package/src/__tests__/tiptapBridge.test.ts +29 -0
- package/src/__tests__/tiptapImageRoundTrip.test.ts +73 -0
- package/src/__tests__/useImageEditor.test.tsx +159 -0
- package/src/__tests__/useMediaRecorder.test.ts +186 -0
- package/src/__tests__/versionHistory.test.tsx +197 -0
- package/src/blockSlice.ts +75 -0
- package/src/buildPreviewDoc.ts +61 -6
- package/src/emojiData.ts +1337 -0
- package/src/fileKind.ts +30 -6
- package/src/hooks/useFileDrop.ts +40 -4
- package/src/imageEditor/CanvasSurface.tsx +402 -0
- package/src/imageEditor/ImageVersionHistoryDropdown.tsx +396 -0
- package/src/imageEditor/LayersPanel.tsx +143 -0
- package/src/imageEditor/PropertiesPanel.tsx +428 -0
- package/src/imageEditor/Toolbar.tsx +242 -0
- package/src/imageEditor/icons.tsx +144 -0
- package/src/imageEditor/image-editor.css +450 -0
- package/src/imageEditor/layers/EditorImageLayer.tsx +45 -0
- package/src/imageEditor/layers/EditorShapeLayer.tsx +62 -0
- package/src/imageEditor/layers/EditorTextLayer.tsx +45 -0
- package/src/imageEditor/layers/SelectionHandles.tsx +86 -0
- package/src/imageEditor/state.ts +153 -0
- package/src/imageEditor/useImageEditor.ts +328 -0
- package/src/imageEditor/useImageEditorTokens.ts +70 -0
- package/src/index.ts +82 -0
- package/src/jsonEditor/EmbeddedRichTextField.tsx +81 -0
- package/src/jsonEditor/JsonEditor.tsx +81 -0
- package/src/jsonEditor/JsonEditorContext.tsx +75 -0
- package/src/jsonEditor/RenderNode.tsx +66 -0
- package/src/jsonEditor/editors.tsx +678 -0
- package/src/jsonEditor/index.ts +2 -0
- package/src/jsonEditor/json-editor.css +463 -0
- package/src/jsonEditor/useJsonEditorTokens.ts +63 -0
- package/src/recorder/RecorderButton.tsx +72 -0
- package/src/recorder/RecorderModal.tsx +596 -0
- package/src/recorder/RecorderPanel.tsx +93 -0
- package/src/recorder/formats.ts +159 -0
- package/src/recorder/hooks/useMediaRecorder.ts +378 -0
- package/src/recorder/hooks/useStreamPreview.ts +47 -0
- package/src/recorder/sources/cameraStream.ts +32 -0
- package/src/recorder/sources/micStream.ts +25 -0
- package/src/recorder/sources/screenStream.ts +162 -0
- package/src/recorder/timingJson.ts +66 -0
- package/src/styles/editor.css +2490 -51
- package/src/styles/image-edit-affordance.css +201 -0
- package/src/styles/index.css +10 -0
- package/src/tiptap/TiptapAudio.tsx +86 -0
- package/src/tiptap/TiptapVideo.tsx +119 -0
- package/src/tiptap/useResolvedMediaSrc.ts +47 -0
- package/src/tiptapBridge.ts +227 -22
- package/src/useHeadingLayout.ts +294 -0
- package/src/utils/collectInlineFontAwesomeCss.ts +69 -0
- package/src/utils/dropUtils.ts +54 -6
- package/src/utils/normalizeMalformedAssetUrl.ts +22 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DocumentSettingsDialog
|
|
3
|
+
*
|
|
4
|
+
* Modal editor for the frontmatter values that Squisq currently
|
|
5
|
+
* understands: document title plus the persisted preview keys
|
|
6
|
+
* (`squisq-theme`, `squisq-transform`, `squisq-captions`). Writes back
|
|
7
|
+
* to the same `setFrontmatterValues` channel that `PreviewControls`
|
|
8
|
+
* uses, so any change made here is reflected in the play-mode controls
|
|
9
|
+
* (and vice versa).
|
|
10
|
+
*
|
|
11
|
+
* Title behavior: the placeholder shows the title that
|
|
12
|
+
* `inferDocumentTitle()` would derive from frontmatter or headings.
|
|
13
|
+
* When the user-entered title is empty or equal to the inferred title,
|
|
14
|
+
* the `title:` key is removed from frontmatter — there's no point
|
|
15
|
+
* storing a redundant value.
|
|
16
|
+
*/
|
|
17
|
+
export interface DocumentSettingsDialogProps {
|
|
18
|
+
/** Current markdown source string (frontmatter + body). */
|
|
19
|
+
markdownSource: string;
|
|
20
|
+
/** Called with the rewritten source after the user clicks Save. */
|
|
21
|
+
onSave: (nextSource: string) => void;
|
|
22
|
+
/** Called when the dialog is dismissed (Cancel, Escape, backdrop click). */
|
|
23
|
+
onClose: () => void;
|
|
24
|
+
}
|
|
25
|
+
export declare function DocumentSettingsDialog({ markdownSource, onSave, onClose, }: DocumentSettingsDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
//# sourceMappingURL=DocumentSettingsDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocumentSettingsDialog.d.ts","sourceRoot":"","sources":["../src/DocumentSettingsDialog.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAuCH,MAAM,WAAW,2BAA2B;IAC1C,2DAA2D;IAC3D,cAAc,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,4EAA4E;IAC5E,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAID,wBAAgB,sBAAsB,CAAC,EACrC,cAAc,EACd,MAAM,EACN,OAAO,GACR,EAAE,2BAA2B,2CAoM7B"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* DocumentSettingsDialog
|
|
4
|
+
*
|
|
5
|
+
* Modal editor for the frontmatter values that Squisq currently
|
|
6
|
+
* understands: document title plus the persisted preview keys
|
|
7
|
+
* (`squisq-theme`, `squisq-transform`, `squisq-captions`). Writes back
|
|
8
|
+
* to the same `setFrontmatterValues` channel that `PreviewControls`
|
|
9
|
+
* uses, so any change made here is reflected in the play-mode controls
|
|
10
|
+
* (and vice versa).
|
|
11
|
+
*
|
|
12
|
+
* Title behavior: the placeholder shows the title that
|
|
13
|
+
* `inferDocumentTitle()` would derive from frontmatter or headings.
|
|
14
|
+
* When the user-entered title is empty or equal to the inferred title,
|
|
15
|
+
* the `title:` key is removed from frontmatter — there's no point
|
|
16
|
+
* storing a redundant value.
|
|
17
|
+
*/
|
|
18
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
19
|
+
import { inferDocumentTitle, parseMarkdown, setFrontmatterValues, } from '@bendyline/squisq/markdown';
|
|
20
|
+
import { getTransformStyleSummaries } from '@bendyline/squisq/transform';
|
|
21
|
+
import { ThemePicker } from './ThemePicker';
|
|
22
|
+
// ── Frontmatter key constants ─────────────────────────────────────
|
|
23
|
+
/** Mirror of `FM_KEYS` in PreviewControls.tsx. Canonical names are the
|
|
24
|
+
* ones we write; legacy aliases are still read so older docs work. */
|
|
25
|
+
const FM = {
|
|
26
|
+
theme: { canonical: 'squisq-theme', legacy: 'theme' },
|
|
27
|
+
transform: { canonical: 'squisq-transform', legacy: 'transform-style' },
|
|
28
|
+
captions: { canonical: 'squisq-captions', legacy: 'caption-style' },
|
|
29
|
+
};
|
|
30
|
+
function readFm(fm, canonical, legacy) {
|
|
31
|
+
if (!fm)
|
|
32
|
+
return '';
|
|
33
|
+
const v = Object.prototype.hasOwnProperty.call(fm, canonical) ? fm[canonical] : fm[legacy];
|
|
34
|
+
return typeof v === 'string' ? v : '';
|
|
35
|
+
}
|
|
36
|
+
const CAPTION_OPTIONS = [
|
|
37
|
+
{ key: '', label: 'Default (Standard)' },
|
|
38
|
+
{ key: 'standard', label: 'Standard' },
|
|
39
|
+
{ key: 'social', label: 'Social' },
|
|
40
|
+
];
|
|
41
|
+
// ── Component ─────────────────────────────────────────────────────
|
|
42
|
+
export function DocumentSettingsDialog({ markdownSource, onSave, onClose, }) {
|
|
43
|
+
// Parse once at open; further edits flow through local form state and
|
|
44
|
+
// are committed in a single `setFrontmatterValues` call on Save.
|
|
45
|
+
const parsed = useMemo(() => parseMarkdown(markdownSource), [markdownSource]);
|
|
46
|
+
const frontmatter = parsed.frontmatter;
|
|
47
|
+
const inferredTitle = useMemo(() => inferDocumentTitle(parsed), [parsed]);
|
|
48
|
+
const currentTitle = typeof frontmatter?.title === 'string' ? frontmatter.title : '';
|
|
49
|
+
const currentTheme = readFm(frontmatter, FM.theme.canonical, FM.theme.legacy);
|
|
50
|
+
const currentTransform = readFm(frontmatter, FM.transform.canonical, FM.transform.legacy);
|
|
51
|
+
const currentCaptions = readFm(frontmatter, FM.captions.canonical, FM.captions.legacy);
|
|
52
|
+
const [title, setTitle] = useState(currentTitle);
|
|
53
|
+
const [theme, setTheme] = useState(currentTheme);
|
|
54
|
+
const [transform, setTransform] = useState(currentTransform);
|
|
55
|
+
const [captions, setCaptions] = useState(currentCaptions);
|
|
56
|
+
const titleRef = useRef(null);
|
|
57
|
+
useEffect(() => {
|
|
58
|
+
titleRef.current?.focus();
|
|
59
|
+
titleRef.current?.select();
|
|
60
|
+
}, []);
|
|
61
|
+
// Esc closes; click on backdrop closes (but not on dialog itself).
|
|
62
|
+
useEffect(() => {
|
|
63
|
+
const onKey = (e) => {
|
|
64
|
+
if (e.key === 'Escape')
|
|
65
|
+
onClose();
|
|
66
|
+
};
|
|
67
|
+
document.addEventListener('keydown', onKey);
|
|
68
|
+
return () => document.removeEventListener('keydown', onKey);
|
|
69
|
+
}, [onClose]);
|
|
70
|
+
const handleBackdrop = useCallback((e) => {
|
|
71
|
+
if (e.target === e.currentTarget)
|
|
72
|
+
onClose();
|
|
73
|
+
}, [onClose]);
|
|
74
|
+
// Dropdown options — built once per render; cheap.
|
|
75
|
+
const transformOptions = useMemo(() => [
|
|
76
|
+
{ key: '', label: 'None' },
|
|
77
|
+
...getTransformStyleSummaries().map((s) => ({ key: s.id, label: s.name })),
|
|
78
|
+
], []);
|
|
79
|
+
const handleSave = useCallback((e) => {
|
|
80
|
+
e.preventDefault();
|
|
81
|
+
const trimmedTitle = title.trim();
|
|
82
|
+
const titleMatchesInferred = !!inferredTitle && trimmedTitle === inferredTitle;
|
|
83
|
+
// Empty input OR matches the value we'd infer otherwise → no
|
|
84
|
+
// explicit title needed in frontmatter.
|
|
85
|
+
const nextTitle = !trimmedTitle || titleMatchesInferred ? null : trimmedTitle;
|
|
86
|
+
const updates = {
|
|
87
|
+
title: nextTitle,
|
|
88
|
+
[FM.theme.canonical]: theme || null,
|
|
89
|
+
// Legacy `theme` key would shadow our canonical one — clear it
|
|
90
|
+
// when the user changes the theme so the canonical write wins.
|
|
91
|
+
...(currentTheme && theme !== currentTheme ? { [FM.theme.legacy]: null } : {}),
|
|
92
|
+
[FM.transform.canonical]: transform || null,
|
|
93
|
+
...(currentTransform && transform !== currentTransform
|
|
94
|
+
? { [FM.transform.legacy]: null }
|
|
95
|
+
: {}),
|
|
96
|
+
[FM.captions.canonical]: captions || null,
|
|
97
|
+
...(currentCaptions && captions !== currentCaptions ? { [FM.captions.legacy]: null } : {}),
|
|
98
|
+
};
|
|
99
|
+
const nextSource = setFrontmatterValues(markdownSource, updates);
|
|
100
|
+
onSave(nextSource);
|
|
101
|
+
}, [
|
|
102
|
+
title,
|
|
103
|
+
theme,
|
|
104
|
+
transform,
|
|
105
|
+
captions,
|
|
106
|
+
inferredTitle,
|
|
107
|
+
markdownSource,
|
|
108
|
+
currentTheme,
|
|
109
|
+
currentTransform,
|
|
110
|
+
currentCaptions,
|
|
111
|
+
onSave,
|
|
112
|
+
]);
|
|
113
|
+
return (_jsx("div", { className: "squisq-doc-settings-overlay", onMouseDown: handleBackdrop, children: _jsxs("form", { className: "squisq-doc-settings-dialog", onSubmit: handleSave, children: [_jsxs("div", { className: "squisq-doc-settings-header", children: [_jsx("h2", { className: "squisq-doc-settings-title", children: "Document settings" }), _jsx("button", { type: "button", className: "squisq-doc-settings-close", onClick: onClose, "aria-label": "Close", children: "\u00D7" })] }), _jsxs("div", { className: "squisq-doc-settings-body", children: [_jsxs("div", { className: "squisq-doc-settings-field", children: [_jsx("label", { className: "squisq-doc-settings-label", htmlFor: "squisq-doc-settings-title", children: "Title" }), _jsx("input", { ref: titleRef, id: "squisq-doc-settings-title", type: "text", className: "squisq-doc-settings-input", value: title, onChange: (e) => setTitle(e.target.value), placeholder: inferredTitle ?? 'Document title', spellCheck: true }), inferredTitle ? (_jsxs("span", { className: "squisq-doc-settings-hint", children: ["Defaults to ", _jsx("strong", { children: inferredTitle }), " \u2014 leave blank to use it."] })) : (_jsx("span", { className: "squisq-doc-settings-hint", children: "No title heading found \u2014 set one here or add an H1 to the document." }))] }), _jsxs("div", { className: "squisq-doc-settings-field", children: [_jsx("span", { className: "squisq-doc-settings-label", children: "Theme" }), _jsx(ThemePicker, { value: theme, onChange: setTheme, includeDefault: true, variant: "full", ariaLabel: "Theme" })] }), _jsxs("div", { className: "squisq-doc-settings-field", children: [_jsx("label", { className: "squisq-doc-settings-label", htmlFor: "squisq-doc-settings-transform", children: "Transform" }), _jsx("select", { id: "squisq-doc-settings-transform", className: "squisq-doc-settings-input", value: transform, onChange: (e) => setTransform(e.target.value), children: transformOptions.map((o) => (_jsx("option", { value: o.key, children: o.label }, o.key))) })] }), _jsxs("div", { className: "squisq-doc-settings-field", children: [_jsx("label", { className: "squisq-doc-settings-label", htmlFor: "squisq-doc-settings-captions", children: "Captions" }), _jsx("select", { id: "squisq-doc-settings-captions", className: "squisq-doc-settings-input", value: captions, onChange: (e) => setCaptions(e.target.value), children: CAPTION_OPTIONS.map((o) => (_jsx("option", { value: o.key, children: o.label }, o.key))) })] })] }), _jsxs("div", { className: "squisq-doc-settings-footer", children: [_jsx("button", { type: "button", className: "squisq-doc-settings-btn squisq-doc-settings-btn--secondary", onClick: onClose, children: "Cancel" }), _jsx("button", { type: "submit", className: "squisq-doc-settings-btn squisq-doc-settings-btn--primary", children: "Save" })] })] }) }));
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=DocumentSettingsDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocumentSettingsDialog.js","sourceRoot":"","sources":["../src/DocumentSettingsDialog.tsx"],"names":[],"mappings":"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"}
|
package/dist/EditorContext.d.ts
CHANGED
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
import { type ReactNode } from 'react';
|
|
10
10
|
import type { Doc, MediaProvider } from '@bendyline/squisq/schemas';
|
|
11
11
|
import type { MarkdownDocument } from '@bendyline/squisq/markdown';
|
|
12
|
+
import type { ContentContainer } from '@bendyline/squisq/storage';
|
|
13
|
+
import { DocumentVersionManager, type PrunePolicy, type SaveVersionOptions, type SaveVersionResult } from '@bendyline/squisq/versions';
|
|
12
14
|
import type { Editor as TiptapEditor } from '@tiptap/core';
|
|
13
15
|
import type { editor as MonacoEditorNs } from 'monaco-editor';
|
|
14
16
|
/** Monaco standalone code editor instance type */
|
|
@@ -37,14 +39,43 @@ export interface MentionCandidate {
|
|
|
37
39
|
* the editor only cares that candidates come back in relevance order.
|
|
38
40
|
*/
|
|
39
41
|
export type MentionProvider = (query: string) => Promise<MentionCandidate[]>;
|
|
42
|
+
/**
|
|
43
|
+
* A document that the link dialog's "Browse documents" picker can offer.
|
|
44
|
+
* `path` is what lands in the markdown URL (typically relative to the
|
|
45
|
+
* current document so `home.md → resume.md` round-trips through file-
|
|
46
|
+
* system serializers). `label` is the human name shown in the list.
|
|
47
|
+
* `description` is an optional secondary line (e.g. workspace folder,
|
|
48
|
+
* last-modified date).
|
|
49
|
+
*/
|
|
50
|
+
export interface DocumentLinkCandidate {
|
|
51
|
+
path: string;
|
|
52
|
+
label: string;
|
|
53
|
+
description?: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Resolves sibling / workspace document candidates for the link dialog.
|
|
57
|
+
* The editor itself has no notion of "neighbors" — hosts that organize
|
|
58
|
+
* docs in a workspace (e.g. docblocks) implement this to power the
|
|
59
|
+
* dialog's document picker. Pass `''` as the query for an initial list
|
|
60
|
+
* (the dialog calls it once on open); subsequent calls narrow by user
|
|
61
|
+
* input.
|
|
62
|
+
*/
|
|
63
|
+
export type DocumentLinkProvider = (query: string) => Promise<DocumentLinkCandidate[]>;
|
|
40
64
|
export type EditorView = 'raw' | 'wysiwyg' | 'preview';
|
|
41
65
|
export type EditorTheme = 'light' | 'dark';
|
|
66
|
+
/**
|
|
67
|
+
* How much of the active Squisq theme the WYSIWYG editing surface
|
|
68
|
+
* mirrors. `'fonts'` is the historical default — body and heading
|
|
69
|
+
* fonts only. `'fonts-colors'` also borrows the theme canvas / text
|
|
70
|
+
* colors. `'none'` opts out completely.
|
|
71
|
+
*/
|
|
72
|
+
export type ThemeInheritance = 'none' | 'fonts' | 'fonts-colors';
|
|
42
73
|
/**
|
|
43
74
|
* Editor operating mode. `markdown` is the full experience (WYSIWYG +
|
|
44
75
|
* Preview tabs, formatting toolbar). `code` is a Monaco-only view used
|
|
45
76
|
* when the content represents a non-markdown file like `foo.ts`.
|
|
46
77
|
*/
|
|
47
|
-
export type EditorMode = 'markdown' | 'code';
|
|
78
|
+
export type EditorMode = 'markdown' | 'code' | 'image';
|
|
48
79
|
export interface EditorState {
|
|
49
80
|
/** Raw markdown source string */
|
|
50
81
|
markdownSource: string;
|
|
@@ -64,6 +95,62 @@ export interface EditorState {
|
|
|
64
95
|
editorMode: EditorMode;
|
|
65
96
|
/** Monaco language ID for the Raw editor. */
|
|
66
97
|
language: string;
|
|
98
|
+
/**
|
|
99
|
+
* Whether the inline preview gutter (per-block card previews next to the
|
|
100
|
+
* WYSIWYG surface) is currently visible. Initialized from the EditorShell
|
|
101
|
+
* `inlinePreview` prop; the View menu in the toolbar can toggle it at
|
|
102
|
+
* runtime.
|
|
103
|
+
*/
|
|
104
|
+
inlinePreviewVisible: boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Whether the bottom status bar is currently visible. Initialized from
|
|
107
|
+
* the EditorShell `showStatusBar` prop (default true); the View menu in
|
|
108
|
+
* the toolbar can toggle it at runtime.
|
|
109
|
+
*/
|
|
110
|
+
statusBarVisible: boolean;
|
|
111
|
+
/**
|
|
112
|
+
* Whether the left-side outline pane is currently visible. Initialized
|
|
113
|
+
* from the EditorShell `outline` prop (default false); the View menu in
|
|
114
|
+
* the toolbar can toggle it at runtime.
|
|
115
|
+
*/
|
|
116
|
+
outlineVisible: boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Whether inline block-template tags (the chip next to each templated
|
|
119
|
+
* heading in the WYSIWYG view, plus the subtle affordance chip on plain
|
|
120
|
+
* headings) are currently visible. Initialized from the EditorShell
|
|
121
|
+
* `blockTags` prop (default true); the View menu in the toolbar can
|
|
122
|
+
* toggle it at runtime.
|
|
123
|
+
*/
|
|
124
|
+
blockTagsVisible: boolean;
|
|
125
|
+
/**
|
|
126
|
+
* How much of the active Squisq theme the WYSIWYG editing surface should
|
|
127
|
+
* inherit. `'none'` shows the default editor styling, `'fonts'` (the
|
|
128
|
+
* default) matches body and heading fonts only, and `'fonts-colors'`
|
|
129
|
+
* also borrows the theme's canvas / text colors so authors get a
|
|
130
|
+
* closer preview while editing.
|
|
131
|
+
*/
|
|
132
|
+
themeInheritance: ThemeInheritance;
|
|
133
|
+
/**
|
|
134
|
+
* Relative path of an image the user requested to edit, or `null` when
|
|
135
|
+
* no editor is open. Surfaced by `<ImageNodeView>`'s hover affordance
|
|
136
|
+
* and consumed by `<EditorShell>` to render the modal `<ImageEditor>`.
|
|
137
|
+
*/
|
|
138
|
+
imageEditTarget: string | null;
|
|
139
|
+
/**
|
|
140
|
+
* Monotonic counter bumped whenever a managed media asset is rewritten
|
|
141
|
+
* (e.g. after the image-editor modal saves back). Image render paths
|
|
142
|
+
* that cache resolved blob URLs should include this in their effect
|
|
143
|
+
* deps so the new bytes get picked up.
|
|
144
|
+
*/
|
|
145
|
+
mediaRevision: number;
|
|
146
|
+
/**
|
|
147
|
+
* Whether the in-editor media recorder should be available. Defaults
|
|
148
|
+
* to true when a `mediaProvider` is wired; hosts that explicitly
|
|
149
|
+
* don't want the affordance (e.g. read-only embeds, surfaces where
|
|
150
|
+
* camera/screen prompts would be jarring) can pass `false` on the
|
|
151
|
+
* shell.
|
|
152
|
+
*/
|
|
153
|
+
allowRecording: boolean;
|
|
67
154
|
}
|
|
68
155
|
export interface EditorActions {
|
|
69
156
|
/** Set markdown source and trigger re-parse */
|
|
@@ -78,16 +165,62 @@ export interface EditorActions {
|
|
|
78
165
|
setMonacoEditor: (editor: MonacoEditor | null) => void;
|
|
79
166
|
/** Set the color theme */
|
|
80
167
|
setTheme: (theme: EditorTheme) => void;
|
|
168
|
+
/** Show or hide the inline preview gutter at runtime (driven by the View menu). */
|
|
169
|
+
setInlinePreviewVisible: (visible: boolean) => void;
|
|
170
|
+
/** Show or hide the bottom status bar at runtime (driven by the View menu). */
|
|
171
|
+
setStatusBarVisible: (visible: boolean) => void;
|
|
172
|
+
/** Show or hide the left-side outline pane at runtime (driven by the View menu). */
|
|
173
|
+
setOutlineVisible: (visible: boolean) => void;
|
|
174
|
+
/** Show or hide inline block-template tags at runtime (driven by the View menu). */
|
|
175
|
+
setBlockTagsVisible: (visible: boolean) => void;
|
|
176
|
+
/** Change how much of the active Squisq theme the WYSIWYG surface mirrors. */
|
|
177
|
+
setThemeInheritance: (mode: ThemeInheritance) => void;
|
|
81
178
|
/** Insert text at the current cursor position in the active editor */
|
|
82
179
|
insertAtCursor: (text: string) => void;
|
|
83
180
|
/** Replace all editor content with the given text */
|
|
84
181
|
replaceAll: (text: string) => void;
|
|
182
|
+
/**
|
|
183
|
+
* Request the modal image editor open on the given relative media path.
|
|
184
|
+
* The path must resolve through the active `mediaProvider`. No-op when
|
|
185
|
+
* no provider is wired — callers should hide the affordance in that
|
|
186
|
+
* case.
|
|
187
|
+
*/
|
|
188
|
+
openImageEdit: (relativePath: string) => void;
|
|
189
|
+
/** Close the image editor modal without saving. */
|
|
190
|
+
closeImageEdit: () => void;
|
|
191
|
+
/**
|
|
192
|
+
* Bump `mediaRevision`. Called after the image editor writes back to
|
|
193
|
+
* the original media path so dependent `<img>` nodes re-resolve their
|
|
194
|
+
* blob URL.
|
|
195
|
+
*/
|
|
196
|
+
bumpMediaRevision: () => void;
|
|
85
197
|
}
|
|
86
198
|
export interface EditorContextValue extends EditorState, EditorActions {
|
|
87
199
|
/** The live Tiptap editor instance (null when WYSIWYG is not mounted) */
|
|
88
200
|
tiptapEditor: TiptapEditor | null;
|
|
89
201
|
/** The live Monaco editor instance (null when Raw is not mounted) */
|
|
90
202
|
monacoEditor: MonacoEditor | null;
|
|
203
|
+
/**
|
|
204
|
+
* Workspace-scoped `ContentContainer` for this document — the folder
|
|
205
|
+
* holding the doc, its `_files/` sidecar, sibling documents, and any
|
|
206
|
+
* version snapshots. Drives audio mapping, version history, and
|
|
207
|
+
* sibling-doc reads for the recursive HTML export.
|
|
208
|
+
*/
|
|
209
|
+
workspaceContainer: ContentContainer | null;
|
|
210
|
+
/**
|
|
211
|
+
* Version manager — non-null only when the host opted into versioning
|
|
212
|
+
* (`allowVersioning` + a `workspaceContainer`). Components can call
|
|
213
|
+
* `saveVersion` directly, or render the version-history panel which
|
|
214
|
+
* reads it from here.
|
|
215
|
+
*/
|
|
216
|
+
versioning: DocumentVersionManager | null;
|
|
217
|
+
/**
|
|
218
|
+
* Stamp a new snapshot of the current document. No-op (returns
|
|
219
|
+
* `unchanged`) when content matches the latest version. Always safe
|
|
220
|
+
* to call — when versioning is disabled, returns `no-document`
|
|
221
|
+
* without writing.
|
|
222
|
+
*/
|
|
223
|
+
saveVersion: (options?: SaveVersionOptions) => Promise<SaveVersionResult>;
|
|
91
224
|
/** MediaProvider for resolving image URLs in the WYSIWYG editor */
|
|
92
225
|
mediaProvider: MediaProvider | null;
|
|
93
226
|
/**
|
|
@@ -105,6 +238,13 @@ export interface EditorContextValue extends EditorState, EditorActions {
|
|
|
105
238
|
* the user types `@<query>`. When unset, `@` is just a literal character.
|
|
106
239
|
*/
|
|
107
240
|
mentionProvider: MentionProvider | null;
|
|
241
|
+
/**
|
|
242
|
+
* Optional provider for sibling-document suggestions in the link
|
|
243
|
+
* dialog. When set, the dialog shows a "Browse documents" picker that
|
|
244
|
+
* lets authors search neighbor docs by name and insert a relative-
|
|
245
|
+
* path link. When unset, the dialog falls back to URL-only.
|
|
246
|
+
*/
|
|
247
|
+
documentLinkProvider: DocumentLinkProvider | null;
|
|
108
248
|
}
|
|
109
249
|
export type ImageDisplayMode = 'inline' | 'thumbnail';
|
|
110
250
|
/**
|
|
@@ -120,6 +260,41 @@ export interface EditorProviderProps {
|
|
|
120
260
|
articleId?: string;
|
|
121
261
|
/** Color theme */
|
|
122
262
|
theme?: EditorTheme;
|
|
263
|
+
/**
|
|
264
|
+
* Workspace-scoped `ContentContainer` for this document — the folder
|
|
265
|
+
* holding the doc, its `_files/` sidecar, sibling documents, and any
|
|
266
|
+
* version snapshots. Required for `allowVersioning` to take effect.
|
|
267
|
+
*/
|
|
268
|
+
workspaceContainer?: ContentContainer | null;
|
|
269
|
+
/**
|
|
270
|
+
* Enable version history. Snapshots are stored at
|
|
271
|
+
* `.versions/<basename>.<timestamp>.md` inside `workspaceContainer`.
|
|
272
|
+
* Auto-save fires after `versioningAutoSaveIdleMs` of idle; hosts can
|
|
273
|
+
* also call `saveVersion()` from the context. Without a
|
|
274
|
+
* `workspaceContainer`, this prop is ignored (and a `console.warn` is
|
|
275
|
+
* emitted).
|
|
276
|
+
*/
|
|
277
|
+
allowVersioning?: boolean;
|
|
278
|
+
/** Override the basename used in version filenames. Defaults to the
|
|
279
|
+
* basename of the container's primary document path. */
|
|
280
|
+
versionBasename?: string;
|
|
281
|
+
/**
|
|
282
|
+
* Prune policy applied after each successful auto-save. Defaults to
|
|
283
|
+
* keeping the last 50 snapshots so the count doesn't grow unbounded.
|
|
284
|
+
*/
|
|
285
|
+
versioningPrunePolicy?: PrunePolicy;
|
|
286
|
+
/**
|
|
287
|
+
* Idle delay (ms) before auto-saving a version. `0` disables auto-save
|
|
288
|
+
* entirely (versions are saved only via host-driven `saveVersion`
|
|
289
|
+
* calls). Default: 5000.
|
|
290
|
+
*/
|
|
291
|
+
versioningAutoSaveIdleMs?: number;
|
|
292
|
+
/**
|
|
293
|
+
* Notified after each `saveVersion` attempt — both successful saves
|
|
294
|
+
* (`reason: 'saved'`) and skips (`'unchanged'`, `'no-document'`,
|
|
295
|
+
* `'empty'`). Useful for hosts that want a "Last saved" indicator.
|
|
296
|
+
*/
|
|
297
|
+
onSaveVersion?: (result: SaveVersionResult) => void;
|
|
123
298
|
/** MediaProvider for resolving image URLs */
|
|
124
299
|
mediaProvider?: MediaProvider | null;
|
|
125
300
|
/** Display mode for images in the WYSIWYG view. Defaults to `'inline'`. */
|
|
@@ -129,6 +304,18 @@ export interface EditorProviderProps {
|
|
|
129
304
|
* entirely — typing `@` becomes just a literal character again.
|
|
130
305
|
*/
|
|
131
306
|
mentionProvider?: MentionProvider | null;
|
|
307
|
+
/**
|
|
308
|
+
* Async provider for sibling-document suggestions in the link dialog.
|
|
309
|
+
* Omit to fall back to URL-only link insertion.
|
|
310
|
+
*/
|
|
311
|
+
documentLinkProvider?: DocumentLinkProvider | null;
|
|
312
|
+
/**
|
|
313
|
+
* Whether the in-editor media recorder is available in the toolbar.
|
|
314
|
+
* Defaults to true. Set to false to suppress the recorder affordance
|
|
315
|
+
* even when a `mediaProvider` is wired (e.g. read-only embeds,
|
|
316
|
+
* surfaces where camera/screen prompts would be jarring).
|
|
317
|
+
*/
|
|
318
|
+
allowRecording?: boolean;
|
|
132
319
|
/**
|
|
133
320
|
* File name (e.g. `foo.ts`) or bare extension — used to pick a Monaco
|
|
134
321
|
* language and decide between markdown vs. code mode.
|
|
@@ -136,12 +323,69 @@ export interface EditorProviderProps {
|
|
|
136
323
|
fileName?: string;
|
|
137
324
|
/** Explicit Monaco language ID — wins over the fileName-derived one. */
|
|
138
325
|
language?: string;
|
|
326
|
+
/**
|
|
327
|
+
* Initial visibility of the inline preview gutter. Defaults to false.
|
|
328
|
+
* The toolbar's View menu can toggle it at runtime.
|
|
329
|
+
*/
|
|
330
|
+
inlinePreview?: boolean;
|
|
331
|
+
/**
|
|
332
|
+
* Initial visibility of the bottom status bar. Defaults to true.
|
|
333
|
+
* The toolbar's View menu can toggle it at runtime.
|
|
334
|
+
*/
|
|
335
|
+
showStatusBar?: boolean;
|
|
336
|
+
/**
|
|
337
|
+
* Initial visibility of the left-side outline pane. Defaults to false.
|
|
338
|
+
* The toolbar's View menu can toggle it at runtime.
|
|
339
|
+
*/
|
|
340
|
+
outline?: boolean;
|
|
341
|
+
/**
|
|
342
|
+
* Initial visibility of inline block-template tags on headings.
|
|
343
|
+
* Defaults to true. The toolbar's View menu can toggle it at runtime.
|
|
344
|
+
*/
|
|
345
|
+
blockTags?: boolean;
|
|
346
|
+
/**
|
|
347
|
+
* Initial value for how much of the active Squisq theme the WYSIWYG
|
|
348
|
+
* editing surface should mirror. Defaults to `'fonts'` — the
|
|
349
|
+
* historical behavior of inheriting body / heading fonts only. The
|
|
350
|
+
* toolbar's View menu can change it at runtime.
|
|
351
|
+
*/
|
|
352
|
+
themeInheritance?: ThemeInheritance;
|
|
353
|
+
/**
|
|
354
|
+
* Bundled view preferences — a serializable JSON blob covering all
|
|
355
|
+
* runtime-toggleable view options. When provided, individual values
|
|
356
|
+
* here override the matching individual props (`inlinePreview`,
|
|
357
|
+
* `showStatusBar`, `outline`). Hosts wiring this up typically load
|
|
358
|
+
* the blob from their own preferences storage and pair it with
|
|
359
|
+
* {@link onViewPreferencesChange}.
|
|
360
|
+
*/
|
|
361
|
+
viewPreferences?: ViewPreferences;
|
|
362
|
+
/**
|
|
363
|
+
* Notified after each user-driven toggle in the View menu (or any
|
|
364
|
+
* programmatic call to the corresponding context setters). The
|
|
365
|
+
* argument is a full snapshot — hosts can persist it as-is.
|
|
366
|
+
* Not called when {@link viewPreferences} is changed externally.
|
|
367
|
+
*/
|
|
368
|
+
onViewPreferencesChange?: (prefs: ViewPreferences) => void;
|
|
139
369
|
children: ReactNode;
|
|
140
370
|
}
|
|
141
371
|
/**
|
|
142
|
-
*
|
|
143
|
-
*
|
|
372
|
+
* Serializable bundle of all runtime-toggleable view preferences for
|
|
373
|
+
* the editor shell. Hosts can persist this verbatim (e.g. to
|
|
374
|
+
* localStorage) and pass it back via {@link EditorProviderProps.viewPreferences}
|
|
375
|
+
* to restore the user's last view configuration.
|
|
144
376
|
*/
|
|
145
|
-
export
|
|
377
|
+
export interface ViewPreferences {
|
|
378
|
+
/** Whether the left-side outline pane is visible. */
|
|
379
|
+
outline?: boolean;
|
|
380
|
+
/** Whether the inline preview gutter (per-block cards) is visible. */
|
|
381
|
+
inlinePreview?: boolean;
|
|
382
|
+
/** Whether the bottom status bar is visible. */
|
|
383
|
+
showStatusBar?: boolean;
|
|
384
|
+
/** Whether inline block-template tags on headings are visible. */
|
|
385
|
+
blockTags?: boolean;
|
|
386
|
+
/** How much of the active Squisq theme the WYSIWYG surface mirrors. */
|
|
387
|
+
themeInheritance?: ThemeInheritance;
|
|
388
|
+
}
|
|
389
|
+
export declare function EditorProvider({ initialMarkdown, initialView, articleId, theme: initialTheme, workspaceContainer, allowVersioning, versionBasename, versioningPrunePolicy, versioningAutoSaveIdleMs, onSaveVersion, mediaProvider, imageDisplayMode, mentionProvider, documentLinkProvider, allowRecording, fileName, language, inlinePreview, showStatusBar, outline, blockTags, themeInheritance, viewPreferences, onViewPreferencesChange, children, }: EditorProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
146
390
|
export {};
|
|
147
391
|
//# sourceMappingURL=EditorContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorContext.d.ts","sourceRoot":"","sources":["../src/EditorContext.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,OAAO,KAAK,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,eAAe,CAAC;AAI9D,kDAAkD;AAClD,KAAK,YAAY,GAAG,cAAc,CAAC,qBAAqB,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"EditorContext.d.ts","sourceRoot":"","sources":["../src/EditorContext.tsx"],"names":[],"mappings":"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"}
|